class Brush {
  private Field fd;//РїРѕР»Рµ РґР»СЏ Р·Р°РєСЂР°СЃРєРё
  private int shadedCell;//"С†РІРµС‚" РєР»РµС‚РєРё
  //РєРѕРЅСЃС‚СЂСѓРєС‚РѕСЂ
  public Brush(int shaded) {
    this.shadedCell = shaded;
  }
  //РїРѕР»СѓС‡РёС‚СЊ Р·Р°РєСЂР°С‰РµРЅРЅРѕРµ РїРѕР»Рµ
  public Field getShadedField() {
    return this.fd;
  }
  public void setField(Field f1) {
    this.fd=f1;
  }
  public void setColorCell(int colorCell) {
    this.shadedCell=colorCell;
  }
  //РЅРёС‡РµРіРѕ РЅРµ РґРµР»Р°С‚СЊ
  public void noAction(TPoint p) {
  }
  //Р·Р°РєСЂР°СЃРёС‚СЊ С‚РµРєСѓС‰СѓСЋ 
  public void paintCurrentCell(TPoint p) {
    if (fd.getCellValue(p.getX(), p.getY()) !=0 ) {
    fd.setCellValue(p.getX(), p.getY(), shadedCell);}
  }
  //Р·Р°РєСЂР°СЃРёС‚СЊ РєР»РµС‚РєСѓ СЃРїСЂР°РІР°
  public void paintRightCell(TPoint p) {
    if (fd.getCellValue(p.getX()+1, p.getY()) !=0 ) { 
      fd.setCellValue(p.getX()+1, p.getY(), shadedCell);
    }
  }
  //Р·Р°РєСЂР°СЃРёС‚СЊ РєР»РµС‚РєСѓ СЃР»РµРІР°
  public void paintLeftCell(TPoint p) {
    if (fd.getCellValue(p.getX()-1, p.getY()) !=0 ) {
      fd.setCellValue(p.getX()-1, p.getY(), shadedCell);
    }
  }
  //Р·Р°РєСЂР°СЃРёС‚СЊ РєР»РµС‚РєСѓ СЃРІРµСЂС…Сѓ
  public void paintTopCell(TPoint p) {
    if (fd.getCellValue(p.getX(), p.getY()-1) !=0 ) {
      fd.setCellValue(p.getX(), p.getY()-1, shadedCell);
    }
  }
  //Р·Р°РєСЂР°СЃРёС‚СЊ РєР»РµС‚РєСѓ СЃРЅРёР·Сѓ
  public void paintDownCell(TPoint p) {
    if (fd.getCellValue(p.getX(), p.getY()+1) !=0 ) {
      fd.setCellValue(p.getX(), p.getY()+1, shadedCell);
    }
  }
  //Р—Р°РєСЂР°СЃРёС‚СЊ РєР»РµС‚РєСѓ СЃРІРµСЂС…Сѓ СЃРїСЂР°РІР°
  public void paintTopRightCell(TPoint p) {
    if (fd.getCellValue(p.getX()+1, p.getY()-1) !=0 ) {
      fd.setCellValue(p.getX()+1, p.getY()-1, shadedCell);
    }
  }
  //Р—Р°РєСЂР°СЃРёС‚СЊ РєР»РµС‚РєСѓ СЃРІРµСЂС…Сѓ СЃР»РµРІР°
  public void paintTopLeftCell(TPoint p) {
    if (fd.getCellValue(p.getX()-1, p.getY()-1) !=0 ) {
      fd.setCellValue(p.getX()-1, p.getY()-1, shadedCell);
    }
  }
  //Р—Р°РєСЂР°СЃРёС‚СЊ РєР»РµС‚РєСѓ СЃРЅРёР·Сѓ СЃРїСЂР°РІР°
  public void paintDownRightCell(TPoint p) {
    if (fd.getCellValue(p.getX()+1, p.getY()+1) !=0 ) {
      fd.setCellValue(p.getX()+1, p.getY()+1, shadedCell);
    }
  }
  //Р—Р°РєСЂР°СЃРёС‚СЊ РєР»РµС‚РєСѓ СЃРІРµСЂС…Сѓ СЃР»РµРІР°
  public void paintDownLeftCell(TPoint p) {
    if (fd.getCellValue(p.getX()-1, p.getY()+1) !=0 ) {
      fd.setCellValue(p.getX()-1, p.getY()+1, shadedCell);
    }
  }
  //Р—Р°РєСЂР°СЃРёС‚СЊ СЃРµРіРјРµРЅС‚ СЃР»РµРІР° 
  public void paintSegmentLeft(TPoint p) {
    for (int i=0; i<p.getX(); i++) {
      for (int j=0; j<fd.getCount();j++) {
        if (fd.getCellValue(i, j) !=0 ) {
          fd.setCellValue(i, j, shadedCell);
        }
      }
    }
  }
  //Р—Р°РєСЂР°СЃРёС‚СЊ СЃРµРіРјРµРЅС‚ СЃРїСЂР°РІР° 
  public void paintSegmentRight(TPoint p) {
    for (int i=p.getX()+1; i<fd.getCount(); i++) {
      for (int j=0; j<fd.getCount();j++) {
        if (fd.getCellValue(i, j) !=0 ) {
          fd.setCellValue(i, j, shadedCell);
        }
      }
    }
  }
  //Р—Р°РєСЂР°СЃРёС‚СЊ СЃРµРіРјРµРЅС‚ СЃРІРµСЂС…Сѓ 
  public void paintSegmentTop(TPoint p) {
    for (int i=0; i<fd.getCount(); i++) {
      for (int j=0; j<p.getY();j++) {
        if (fd.getCellValue(i, j) !=0 ) {
          fd.setCellValue(i, j, shadedCell);
        }
      }
    }
  }
  //Р—Р°РєСЂР°СЃРёС‚СЊ СЃРµРіРјРµРЅС‚ СЃРІРµСЂС…Сѓ 
  public void paintSegmentDown(TPoint p) {
    for (int i=0; i<fd.getCount(); i++) {
      for (int j=p.getY()+1;j<fd.getCount();j++) {
        if (fd.getCellValue(i, j) !=0 ) {
          fd.setCellValue(i, j, shadedCell);
        }
      }
    }
  }
  public void paintSegment(int i, int j) {
    if (j != 9) {
      if (fd.getCellValue(i, j+1) == 0) {
        fd.setCellValue(i, j+1, -2);
      }
    }
    if (i != 9) {
      if (fd.getCellValue(i+1, j) == 0) {
        fd.setCellValue(i+1, j, -2);
      }
    }
    if (i != 0) {
      if (fd.getCellValue(i-1, j) == 0) {
        fd.setCellValue(i-1, j, -2);
      }
    }
    if (j !=0 ) {
      if (fd.getCellValue(i, j-1) == 0) {
        fd.setCellValue(i, j-1, -2);
      }
    }   
    if (j != 0 && i != 0) {
      if (fd.getCellValue(i-1, j-1) == 0) {
        fd.setCellValue(i-1, j-1, -2);
      }
    }
    if (j != 0 && i != 9) {
      if (fd.getCellValue(i+1, j-1) == 0) {
        fd.setCellValue(i+1, j-1, -2);
      }
    }
    if (j != 9 && i != 0) {
      if (fd.getCellValue(i-1, j+1) == 0) {
        fd.setCellValue(i-1, j+1, -2);
      }
    }
    if (j != 9 && i != 9) {
      if (fd.getCellValue(i+1, j+1) == 0) {
        fd.setCellValue(i+1, j+1, -2);
      }
    }
  }
    public void paintSegment(TPoint start, TPoint stop) {
       for (int i = min(stop.getY(), start.getY()); i <=  max(stop.getY(), start.getY()); i++) {
      for (int j = min(stop.getX(), start.getX()); j <=  max(stop.getX(), start.getX()); j++) {
        paintSegment(j, i);
        }
      }
    }
  }

